Optimization In Machine Learning - First Order Methods - Gradient Descent